/**
 * 获取目标元素父元素的所有子元素的宽度，包括：
 * - 目标元素父元素的所有子元素的宽度（包含边框和内边距）之和；
 * - 目标元素父元素的所有子元素的宽度（包含边框和内边距）组成的列表。
 *
 * @param {Element} el 目标元素
 * @returns {{widthSum: number, widthList: number[]}} 一个对象，包含两个属性：
 * - widthSum：目标元素父元素的所有子元素的宽度（包含边框和内边距）之和；
 * - widthList：目标元素父元素的所有子元素的宽度（包含边框和内边距）组成的列表。
 * 如果目标元素的父元素不存在，则返回的 widthSum 为目标元素的宽度（包含边框和内边距），widthList 为只包含目标元素的
 * 宽度的列表。
 */
export const getParentChildrenWidth = (el: Element): { widthSum: number; widthList: number[] } => {
  let widthSum = 0
  const parentChildren = Array.from(el.parentElement?.children || [el])
  const widthList = parentChildren.map((child) => {
    const currentChildWidth = child.getBoundingClientRect().width
    widthSum += currentChildWidth
    return currentChildWidth
  })

  return {
    widthSum,
    widthList
  }
}

export type GetParentChildrenWidthType = typeof getParentChildrenWidth
